自定义 Linux 镜像文件


环境说明:
参考链接:https://blog.csdn.net/doloveme/article/details/84441243
虚拟机系统为:ubuntu-20.04.4-desktop-amd64.iso
演示镜像为:ubuntu-22.04-desktop-amd64.iso
filesystem.squashfs 路径:/casper/filesystem.squashfs (以下命令均以此为默认路径)

1.切换到 root 用户
su root

2.新建一个工作目录
mkdir workdir

3.进入 workdir
cd workdir

4.新建一个名为 cd 的目录用来挂载光盘或光盘映像文件
mkdir cd

5.挂载 cd 或 映像文件
CD:
mount /dev/cdrom cd
映像文件:
mount -o loop 挂载的镜像名称.iso cd

6.新建一个名为 newcd 的目录
mkdir newcd

7.复制 cd 目录中的文件到 newcd 目录中
cp -a cd/* newcd/

8.删除 newcd/casper/filesystem* 文件
rm newcd/casper/filesystem*

9.新建一个名为 s 的文件夹,用来挂载根分区映像
mkdir s

10.挂载根分区映像
mount -o loop -t squashfs cd/casper/filesystem.squashfs s

11.新建一个名为 edit 的文件夹,用来作为新的根分区编辑目录
mkdir edit

12.复制根分区文件到新根分区
cp -a s/* edit/
不,你没卡。这一步比较慢是正常情况
cp /etc/resolv.conf edit/etc/

13.切换根目录
chroot edit

14.mount /proc 和 /sys 在新根目录中
mount -t proc none /proc
mount -t sysfs none /sys

15.设置环境变量 HOME
export HOME=/root
接下来可以自行对其进行一些配置
比如说:
sudo apt-get install htop

16.配置完成后清除缓存软件包和临时目录
apt-get clean
rm -rf /tmp/*su root
umount /proc
umount /sys

17.退出编辑根目录
exit

18.重新建立 root 用户文件
rm -r edit/root
cp -a s/root edit/

19.将新根目录打包成映像文件
mksquashfs edit newcd/casper/filesystem.squashfs

备注:以下命令若无法使用的话,上一步命令所生成的 filesystem.squashfs 文件路径在创建的 workdir/newcd/casper/ 中。将其拷贝后在 .iso 中替换原来的 file…hfs 文件即可开机测试。

20.生成 filesystem.manifest 和 filesystem.manifest-desktop
chroot edit dpkg-query -W –showformat=’${Package} ${Version}\n’ > newcd/casper/filesystem.manifest
cp newcd/casper/filesystem.manifest newcd/casper/filesystem.manifest-desktop

21.生成 MD5 校验文件
rm newcd/md5sum.txt
cd newcd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt

22.生成光盘 ISO 映像文件
mkisofs -r -V “Ubuntu Live Custom” -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ../Ubuntu-Live-Custom.iso .